package com.springboot.demo.design.pattern.form;

import com.springboot.common.entity.request.Parameter;
import com.springboot.common.entity.request.ParameterBody;
import com.springboot.common.entity.request.Validate;
import com.springboot.common.entity.response.Result;
import com.springboot.demo.design.pattern.enums.FormEnum;
import java.io.Serializable;
import java.util.Date;

/**
 * 表单接口
 *
 * @author supu
 * @date 2019-03-19 14:02
 **/
public interface Form<U, V extends ParameterBody> extends Validate, Serializable {
    /**
     * 获取loader类型
     *
     * @return
     */
    FormEnum getFormEnum();

    /**
     * 获取请求唯一编号
     *
     * @return
     */
    String getFormNo();

    /**
     * 获取提交时间
     *
     * @return
     */
    Date getSubmitTime();

    /**
     * 获取请求参数
     *
     * @return
     */
    Parameter<V> getParameter();

    /**
     * 获取请求结果
     *
     * @return
     */
    Result<U> getResult();

    /**
     * 设置请求结果
     */
    void setResult(Result<U> result);

    /**
     * 获取请求异常
     *
     * @return
     */
    Throwable getThrowable();

    /**
     * 设置请求异常
     */
    void setThrowable(Throwable throwable);
}
